Micron Document
🎖️GitЯра🎖️

Node / meshtastic / Meshtastic-Android / files / core / model / src / commonTest / kotlin / org / meshtastic / core / model / util / ChannelSetUrlTest.kt

Displaying Raw • Download

core/model/src/commonTest/kotlin/org/meshtastic/core/model/util/ChannelSetUrlTest.kt 01cd54907d62cd90913d3d071b6bc240cae365ef (01cd5490) Text, 4.15 KB

T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.core.model.util

Tff7b72import T7ee787okio.ByteString.Companion.decodeBase64
Tff7b72import T7ee787okio.ByteString.Companion.toByteString
Tff7b72import T7ee787org.meshtastic.core.common.util.CommonUri
Tff7b72import T7ee787org.meshtastic.proto.ChannelSet
Tff7b72import T7ee787org.meshtastic.proto.ChannelSettings
Tff7b72import T7ee787org.meshtastic.proto.Config.LoRaConfig
Tff7b72import T7ee787org.meshtastic.proto.Config.LoRaConfig.ModemPreset
Tff7b72import T7ee787org.meshtastic.proto.Config.LoRaConfig.RegionCode
Tff7b72import T7ee787org.meshtastic.proto.ModuleSettings
Tff7b72import T7ee787kotlin.test.Test
Tff7b72import T7ee787kotlin.test.assertEquals
Tff7b72import T7ee787kotlin.test.assertFalse
Tff7b72import T7ee787kotlin.test.assertNull

Tff7b72class T56d364ChannelSetUrlTest Tb4b4b4{

Tf0883e@Test
Tff7b72fun Td2a8ff`legacy fragment add parameter remains add mode alongside other parameters`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3channelSet Tff7b72= Te6edf3CommonUriTb4b4b4.Te6edf3parseTb4b4b4(Ta5d6ff"Tffd700$Te6edf3REPLACE_CHANNEL_URLTa5d6ff?source=ios&add=trueTa5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3toChannelSetTb4b4b4(Tb4b4b4)

Te6edf3assertEqualsTb4b4b4(Ta5d6ff"Ta5d6ffCustomTa5d6ff"Tb4b4b4, Te6edf3channelSetTb4b4b4.Te6edf3primaryChannelTff7b72?.Te6edf3nameTb4b4b4)
Te6edf3assertFalseTb4b4b4(Te6edf3channelSetTb4b4b4.Te6edf3hasLoraConfigTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ff`all supported channel counts preserve settings for replace and add`Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Te6edf3channelCount Tff7b72in T79c0ff1.Tb4b4b4.T79c0ff8Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3original Tff7b72= Te6edf3channelSetTb4b4b4(Te6edf3channelCountTb4b4b4)
Tff7b72val Te6edf3replaceUrl Tff7b72= Te6edf3originalTb4b4b4.Te6edf3getChannelUrlTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3addUrl Tff7b72= Te6edf3originalTb4b4b4.Te6edf3getChannelUrlTb4b4b4(Te6edf3shouldAdd Tff7b72= Tff7b72trueTb4b4b4)
Tff7b72val Te6edf3replace Tff7b72= Te6edf3replaceUrlTb4b4b4.Te6edf3toChannelSetTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3add Tff7b72= Te6edf3addUrlTb4b4b4.Te6edf3toChannelSetTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3replacePayload Tff7b72= Te6edf3replaceUrlTb4b4b4.Te6edf3encodedChannelSetTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3addPayload Tff7b72= Te6edf3addUrlTb4b4b4.Te6edf3encodedChannelSetTb4b4b4(Tb4b4b4)

Te6edf3assertEqualsTb4b4b4(Te6edf3originalTb4b4b4.Te6edf3settingsTb4b4b4, Te6edf3replacePayloadTb4b4b4.Te6edf3settingsTb4b4b4, Ta5d6ff"Tffd700$Te6edf3channelCountTa5d6ff-channel replace payload settingsTa5d6ff"Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(
Te6edf3originalTb4b4b4.Te6edf3lora_configTb4b4b4,
Te6edf3replacePayloadTb4b4b4.Te6edf3lora_configTb4b4b4,
Ta5d6ff"Tffd700$Te6edf3channelCountTa5d6ff-channel replace payload LoRa configTa5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3originalTb4b4b4.Te6edf3settingsTb4b4b4, Te6edf3replaceTb4b4b4.Te6edf3settingsTb4b4b4, Ta5d6ff"Tffd700$Te6edf3channelCountTa5d6ff-channel replace settingsTa5d6ff"Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3originalTb4b4b4.Te6edf3lora_configTb4b4b4, Te6edf3replaceTb4b4b4.Te6edf3lora_configTb4b4b4, Ta5d6ff"Tffd700$Te6edf3channelCountTa5d6ff-channel replace LoRa configTa5d6ff"Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3originalTb4b4b4.Te6edf3settingsTb4b4b4, Te6edf3addPayloadTb4b4b4.Te6edf3settingsTb4b4b4, Ta5d6ff"Tffd700$Te6edf3channelCountTa5d6ff-channel add payload settingsTa5d6ff"Tb4b4b4)
Te6edf3assertNullTb4b4b4(Te6edf3addPayloadTb4b4b4.Te6edf3lora_configTb4b4b4, Ta5d6ff"Tffd700$Te6edf3channelCountTa5d6ff-channel add payload must omit LoRa configTa5d6ff"Tb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3originalTb4b4b4.Te6edf3settingsTb4b4b4, Te6edf3addTb4b4b4.Te6edf3settingsTb4b4b4, Ta5d6ff"Tffd700$Te6edf3channelCountTa5d6ff-channel add settingsTa5d6ff"Tb4b4b4)
Te6edf3assertNullTb4b4b4(Te6edf3addTb4b4b4.Te6edf3lora_configTb4b4b4, Ta5d6ff"Tffd700$Te6edf3channelCountTa5d6ff-channel add must not retuneTa5d6ff"Tb4b4b4)
Tb4b4b4}
Tb4b4b4}

Tff7b72private Tff7b72fun Te6edf3CommonUriTb4b4b4.Td2a8ffencodedChannelSetTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3ChannelSet Tb4b4b4{
Tff7b72val Te6edf3base64 Tff7b72= Te6edf3requireNotNullTb4b4b4(Te6edf3fragmentTb4b4b4)Tb4b4b4.Te6edf3substringBeforeTb4b4b4(Ta5d6ff'?'Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff'-'Tb4b4b4, Ta5d6ff'+'Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff'_'Tb4b4b4, Ta5d6ff'/'Tb4b4b4)
Tff7b72val Te6edf3bytes Tff7b72= Te6edf3requireNotNullTb4b4b4(Te6edf3base64Tb4b4b4.Te6edf3decodeBase64Tb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72return Te6edf3ChannelSetTb4b4b4.Te6edf3ADAPTERTb4b4b4.Te6edf3decodeTb4b4b4(Te6edf3bytesTb4b4b4)
Tb4b4b4}

Tff7b72private Tff7b72fun Td2a8ffchannelSetTb4b4b4(Te6edf3channelCountTb4b4b4: Tffa657IntTb4b4b4)Tb4b4b4: Te6edf3ChannelSet Tff7b72= Te6edf3ChannelSetTb4b4b4(
Te6edf3settings Tff7b72=
Tb4b4b4(T79c0ff0 Te6edf3until Te6edf3channelCountTb4b4b4)Tb4b4b4.Te6edf3map Tb4b4b4{ Te6edf3index Tff7b72-Tff7b72>
Te6edf3ChannelSettingsTb4b4b4(
Te6edf3name Tff7b72= Ta5d6ff"Ta5d6ffConference-Tffd700$Te6edf3indexTa5d6ff"Tb4b4b4,
Te6edf3psk Tff7b72= Te6edf3byteArrayOfTb4b4b4(Te6edf3indexTb4b4b4.Te6edf3toByteTb4b4b4(Tb4b4b4)Tb4b4b4, Tb4b4b4(Te6edf3index Tff7b72+ T79c0ff1T79c0ff6Tb4b4b4)Tb4b4b4.Te6edf3toByteTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toByteStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3module_settings Tff7b72= Te6edf3ModuleSettingsTb4b4b4(Te6edf3position_precision Tff7b72= Te6edf3indexTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tb4b4b4}Tb4b4b4,
Te6edf3lora_config Tff7b72=
Te6edf3LoRaConfigTb4b4b4(
Te6edf3use_preset Tff7b72= Tff7b72trueTb4b4b4,
Te6edf3modem_preset Tff7b72= Te6edf3ModemPresetTb4b4b4.Te6edf3LONG_FASTTb4b4b4,
Te6edf3region Tff7b72= Te6edf3RegionCodeTb4b4b4.Te6edf3USTb4b4b4,
Te6edf3hop_limit Tff7b72= T79c0ff5Tb4b4b4,
Te6edf3channel_num Tff7b72= T79c0ff1T79c0ff3Tb4b4b4,
Te6edf3tx_enabled Tff7b72= Tff7b72trueTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)

Tff7b72private Tff7b72companion Tff7b72object Tb4b4b4{
Tff7b72const Tff7b72val Te6edf3REPLACE_CHANNEL_URL Tff7b72= Ta5d6ff"Ta5d6ffhttps://meshtastic.org/e/#CgMSAQESBggBQANIAQTa5d6ff"
Tb4b4b4}
Tb4b4b4}

Served by rngit 1.5.0 - Generated in 0.05s